#!/bin/bash
# (C) 2016, "Yann E. MORIN" <yann.morin.1998@free.fr>
# License: WTFPL, https://spdx.org/licenses/WTFPL.html

main() {
    local found ret start d h m mf

    if ! which unbuffer >/dev/null 2>&1; then
        printf "you need to install 'unbuffer' (from package expect or expect-dev)\n" >&2
        exit 1
    fi

    start=${SECONDS}

    ( exec 2>&1; unbuffer make "${@}"; ) \
    > >( while read line; do
             printf "%(%Y-%m-%dT%H:%M:%S)T %s\n" -1 "${line}"
         done \
         |tee -a br.log \
         |grep --colour=never -E '>>>'
       )
    ret=${?}

    d=$((SECONDS-start))
    printf "Done in "
    h=$((d/3600))
    d=$((d%3600))
    [ ${h} -eq 0 ] || { printf "%dh " ${h}; mf="02"; }
    m=$((d/60))
    d=$((d%60))
    [ ${m} -eq 0 ] || { printf "%${mf}dmin " ${m}; sf="02"; }
    printf "%${sf}ds" ${d}

    if [ ${ret} -ne 0 ]; then
        printf "  (error code: %s)" ${ret}
    fi
    printf "\n"

    return ${ret}
}

main "${@}"
